package com.caocaog.market.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.caocaog.market.entity.Member;
import com.caocaog.market.entity.MemberPointStatement;
import com.caocaog.market.vo.MemberPointModifyVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description: 客户积分流水
 * @Author: jeecg-boot
 * @Date: 2023-12-01
 * @Version: V1.0
 */
public interface IMemberPointStatementService extends IService<MemberPointStatement> {

    /**
     * 获取客户的积分信息优先走Cache
     *
     * @param memberId 客户id
     * @return 积分数据
     */
    List<MemberPointStatement> getMemberPointByCache(String memberId);

    /**
     * 将客户的积分台账塞入缓存
     * @param memberId 客户ID
     */
    void setMemberPointToCache(String memberId);

    /**
     * 根据客户ID查询出台账List
     * @param memberId 客户ID
     * @return 查询出来的积分台账List
     */
    List<MemberPointStatement> getMemberPointStatementByMemberId(String memberId);
    /**
     * 从数据库中获取真实的客户账户积分
     *
     * @param memberId 客户id
     * @return 客户积分数量，从DB获取
     */
    BigDecimal getMemberPointByDB(String memberId);

    /**
     * 修改客户的积分情况，根据传入的modifyPoint而定为正则为点数增加，为负则为点数减少
     *
     * @param memberPointModifyVO 积分变动的VO类
     * @see BigDecimal#negate()
     */
    BigDecimal modifyMemberPoint(MemberPointModifyVO memberPointModifyVO);

}
